有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我想从具有innermap和outermap关系的hashmap创建一个hashmap?

public interface InnerMap<V> extends Map<String, V> {
    Map<String, V> getInnerMap(String prefix);
}

例如:

baseMap.put("aabb", "one");
baseMap.put("aabbddd", "two");
InnerMap map1 = baseMap.getInnerMap("aa");
map1.get("bb") => "one"
map1.get("bbdd") => "two"
map1.get("aa") => null
map2 = map1.getInnerMap("bb");
map2.get("dd") => "two"

还想重写put and get方法


共 (2) 个答案

  1. # 2 楼答案

    很难追踪所有可能的内部地图。毫无疑问,如果你索引了密钥之类的东西,有一个比我更有效的解决方案。然而,如果快速和肮脏对你有用,试试这个。你没有提到一种语言,所以你得到了Java——希望我猜对了

    import java.util.HashMap;
    import java.util.Map.Entry;
    
    public class InnerMap extends HashMap<String, String> {
    
        public InnerMap getInnerMap(String key) {
            InnerMap innerMap = new InnerMap();
            for (Entry<String, String> entry : entrySet()) {
                String existingKey = entry.getKey();
                String value = entry.getValue();
                if (existingKey.startsWith(key)) {
                    String newKey = existingKey.substring(key.length());
                    innerMap.put(newKey, value);
                }
            }
            return innerMap;
        }
    
    }
    
    public class Test {
        public static void main(String[] args) {
            InnerMap baseMap = new InnerMap();
            baseMap.put("aabb", "one");
            baseMap.put("aabbdd", "two");
            InnerMap map1 = baseMap.getInnerMap("aa");
            System.out.println(map1.get("bb"));// => "one"
            System.out.println(map1.get("bbdd"));// => "two"
            System.out.println(map1.get("aa"));// => null
            InnerMap map2 = map1.getInnerMap("bb");
            System.out.println(map2.get("dd"));// => "two"
        }
    }